import asyncio  # 导入 asyncio 模块，用于异步编程

# 定义异步函数 func1
async def func1():
    print(1)  # 打印 1，表示任务 func1 开始执行
    await asyncio.sleep(2)  # 模拟一个耗时的 I/O 操作，协程挂起 2 秒
    print(2)  # 2 秒后恢复协程，打印 2

# 定义异步函数 func2
async def func2():
    print(3)  # 打印 3，表示任务 func2 开始执行
    await asyncio.sleep(2)  # 模拟另一个耗时的 I/O 操作
    print(4)  # 2 秒后恢复协程，打印 4

# 定义主函数，调度执行多个异步任务
async def main():
    # 并发执行 func1 和 func2，等待它们都完成
    await asyncio.gather(
        func1(),
        func2()
    )

# 启动事件循环，运行主任务
asyncio.run(main())
